package com.gobang.domain.vo;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.LocalDateTime;

/**
 * 匹配成功通知视图对象
 * 用于WebSocket推送匹配成功消息时的数据结构
 *
 * @author gobang-team
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MatchSuccessNotificationVO {

    /**
     * 房间ID
     * 匹配成功后创建的游戏房间唯一标识
     */
    @JsonProperty("roomId")
    private String roomId;

    /**
     * 对手信息
     * 匹配成功的对手用户基本信息
     */
    @JsonProperty("opponent")
    private OpponentInfo opponent;

    /**
     * 当前玩家颜色
     * BLACK表示黑方，WHITE表示白方
     */
    @JsonProperty("playerColor")
    private String playerColor;

    /**
     * 游戏开始时间
     * 预定的游戏开始时间
     */
    @JsonProperty("startTime")
    private LocalDateTime startTime;

    /**
     * 对手信息内部类
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class OpponentInfo {
        
        /**
         * 对手用户ID
         */
        @JsonProperty("id")
        private Long id;
        
        /**
         * 对手用户名
         */
        @JsonProperty("username")
        private String username;
        
        /**
         * 对手当前积分
         */
        @JsonProperty("currentScore")
        private Integer currentScore;
        
        /**
         * 对手头像URL（可选）
         */
        @JsonProperty("avatarUrl")
        private String avatarUrl;
    }
} 